home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 001-010 / amok07 / queue / queue.dok < prev    next >
Encoding:
Text File  |  1993-11-04  |  5.2 KB  |  203 lines

  1.                          Q u e u e
  2.                          =========
  3.  
  4. Dokumentation zum Modul Queue
  5.  
  6. Autor: Michael Frieß [mif]
  7.        Kernerstr. 22a
  8.        7000 Stuttgart 1
  9.  
  10. Kopierrechte
  11. ------------
  12.  
  13. Das gesamte Paket (näheres siehe Kapitel "Paket") ist Public Domain.
  14. Alles (Quelltexte, Dokumentation und Code) kann beliebig
  15. weitergegeben werden, so lange mein Name und die Bemerkungen über
  16. Kopierrechte in den einzelnen Dateien unverändert bleiben.
  17. Es ist nur der nicht-kommerzielle Gebrauch erlaubt, d.h. auch der
  18. Verkauf ist nicht erlaubt.
  19. Nicht erlaubt ist die kommerzielle Verwendung des Paketes oder von
  20. Teilen ohne meine explizite, schriftliche Erlaubnis. Um sie zu
  21. erhalten, nehmen Sie bitte unter der o.a. Adresse Kontakt mit mir
  22. auf.
  23.  
  24.  
  25. Inhaltsverzeichnis
  26. ------------------
  27.  
  28.  Paket
  29.  Einleitung
  30.  Datentyp "Queue"
  31.  Queue-Operatoren
  32.  Beispiel
  33.  Weitere generische Datentypen
  34.  Literaturverzeichnis
  35.  
  36. Paket
  37. -----
  38.  
  39. Das gesamte Paket "Queue" besteht aus folgenden Dateien:
  40.  
  41.   Queue.doc        Englische Dokumentation (für alle Nichtdeutschen)
  42.   Queue.dok        Diese Dokumentation
  43.   Queue.def        Definitionsmodul
  44.   Queue.mod        Implementationsmodul
  45.   Queue.sym        Symboldatei
  46.   Queue.obj        Compilierter Objektcode
  47.   TestOfQueue.mod  Testprogramm (Quelltext)
  48.   TestOfQueue      Testprogramm (ausführbar)
  49.  
  50.  
  51. Einleitung
  52. ----------
  53.  
  54. Modula-II bietet einige wenige grundlegende Datenstrukturen und die
  55. Möglichkeit umfangreichere Strukturen zu konstruieren. Es unterstützt
  56. auch die Entwicklung generischer Datentypen. Das beste Beispiel hierfür
  57. ist der Typ "File", der nicht wie in Pascal zum Sprachumfang gehört,
  58. sondern aus dem Modul "FileSystem" importiert wird. Die auf diesen Typ
  59. ausführbaren Operationen werden in dem gleichen Modul angeboten.
  60. Das einzige, was der Kunde dieses Moduls wissen braucht, ist das
  61. abstrakte Konzept von Files.
  62. Das Modul "Queue" stellt nun den generischen Datentyp Schlange
  63. bereit. Sie brauchen nicht mehr jedesmal, wenn sie eine Schlange
  64. benötigen, Sich mit Zeigern herumschlagen, Sie müssen nur das
  65. dahinter stehende Konzept kennen.
  66.  
  67.  
  68. Datentyp "Queue"
  69. ---------------
  70.  
  71. Der generische Datentyp "Queue" ist eine einfache FIFO-Liste
  72. (First-In-First-Out). Das erste Element, das in die Schlange
  73. eingefügt wird, wird als erstes abgearbeitet, wie eine richtige
  74. Warteschlange.
  75.  
  76.  
  77. List-Operatoren
  78. ---------------
  79.  
  80. Im folgenden sind die möglichen Operationen und ihre abstrakte
  81. Bedeutung aufgeführt. Nähere Einzelheiten können dem
  82. Definitionsmodul entnommen werden.
  83.  
  84. o Init
  85.   Initialisiert eine neue leere Schlange für die weitere
  86.   Verwendung.
  87.  
  88. o Discard
  89.   Löscht eine Schlange und gibt den benötigten Speicherplatz
  90.   zurück.
  91.  
  92. o Write
  93.   fügt ein neues Element am Ende der Schlange an.
  94.  
  95. o Read
  96.   liefert den Inhalt des ersten Element in der Schlange und entfernt
  97.   dieses aus der Schlange.
  98.  
  99. o Empty
  100.   stellt fest, ob die Schlange leer ist.
  101.  
  102.  
  103. Beispiel
  104. --------
  105.  
  106. Die Verwendung ist denkbar einfach:
  107.  
  108. 1) Importiere den Typ und die benötigten Operatoren:
  109.  
  110.    FROM Queue IMPORT queue, Init, Read, Write, Empty, Discard;
  111.  
  112. 2) Definiere den Elementtyp:
  113.    (zum Beispiel:)
  114.  
  115.    TYPE name = ARRAY [1..30] OF CHAR;
  116.  
  117. 3) Definiere eine Variable für die Schlange und eine Variable, die
  118.    die Daten eines Elementes enthält:
  119.  
  120.    VAR q       : queue;
  121.        Name    : name;
  122.  
  123. 4) Initialisiere die Schlange:
  124.  
  125.    Init (q);
  126.  
  127.    (oder mit qualifiziertem Import:)
  128.  
  129.    Queue.Init (q);
  130.  
  131. 5) Füge neue Daten an die Schlange an:
  132.  
  133.    Name    := "Kant";
  134.    Write (q, Name);
  135.  
  136.    weitere Daten können zum Beispiel durch Einlesen von einem File
  137.    oder durch Benutzereingabe eingefügt werden.
  138.  
  139. 6) Lese erstes Element aus der Schlange:
  140.  
  141.    Read (q);
  142.  
  143. 7) Lese alle Elemente aus der Schlange:
  144.  
  145.    WHILE NOT Empty(q) DO
  146.     Read (q, Name);
  147.     - Display Name -
  148.    END;
  149.  
  150. 8) Lösche die Schlange nach Gebrauch:
  151.  
  152.    Discard (q);
  153.  
  154.  
  155. Einfach, oder?
  156.  
  157.  
  158. Weitere generische Datentypen
  159. -----------------------------
  160.  
  161. Ich habe weitere Datentypen entwickelt:
  162.  
  163.   o stack
  164.     eine einfache LIFO-Liste
  165.  
  166.   o list
  167.     eine erweiterte lineare Liste
  168.  
  169.   o AVL-Tree
  170.     Eine nähere Beschreibung kann [1] entnommen werden.
  171.  
  172. Es gibt aber sicher eine Menge anderer sinnvoller Datentypen:
  173.  
  174.   o pipe
  175.     Es gibt einen Pipe-Handler auf irgendeiner FishDisk.
  176.     Die Realisation eines Pipe-Handlers mit voller Unterstützung
  177.     als generischer Datentyp in Modula-II wäre interessant.
  178.     Der große Vorteil von Pipes ist meiner Meinung nach der
  179.     simultane Gebrauch durch mehrere Prozesse. So können zum
  180.     Beispiel zwei Prozesse Daten liefern, während gleichzeitig
  181.     ein Prozess die Daten ausliest.
  182.     (Ich warte schon sehnsüchtig auf ein Modul, das im Gegensatz
  183.     zum Modul CoRoutines die Möglichkeiten des multitasking-fähigen
  184.     Betriebssystem vom Amiga voll ausnützt.
  185.  
  186.   o BTree
  187.     Eine andere Variante von Bäumen (siehe auch [1]).
  188.  
  189.   o Hash-Table
  190.     Vielleicht ist eine Hash-Tabelle auch ein möglicher generischer
  191.     Datentyp. Ich habe mir darüber noch keine Gedanken gemacht.
  192.  
  193. Ich freue mich schon auf eine Menge neuer generischer Datentypen.
  194. Wer seine Module weitergeben möchte, kann eine Diskette an meine
  195. Adresse oder die eines anderen AMOK-Mitglied schicken. Wir werden
  196. sie bestimmt in die nächste AMOK-Diskette aufnehmen.
  197.  
  198. Literaturverzeichnis
  199. --------------------
  200.  
  201. [1] N.Wirth "Algorithmen und Datenstrukturen mit Modula-II"
  202.     Teubner, Stuttgart 1986
  203.